package cn.fl.project.transform;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.base.lnkcomp.transform.BasePrjLnkCompVOTransform;
import cn.fl.project.vo.PrjLnkCompVO;
import cn.fl.system.transform.SysUlFilesRecVOTransform;
import fl.spl.facade.lnkcomp.dto.PrjLnkCompDTO;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 挂靠公司表 转换器
 * @Description: VO是客户端传递数据到服务端进行转换的数据
 * @Description: VO转换数据变成DTO传递到服务端
 * @Description: VO不能在服务端出现
 */
public class PrjLnkCompVOTransform extends BasePrjLnkCompVOTransform {


    /**
     * DTO 转  VO
     *
     * @param dto PrjLnkCompDTO
     * @return PrjLnkCompVO
     */
    public static PrjLnkCompVO toVO(PrjLnkCompDTO dto) {
        PrjLnkCompVO vo = baseToVO(dto);
        if (dto != null) {
            vo.setAudStsCdNm(dto.getAudStsCdNm());//流程状态名称
            vo.setUploadFile(SysUlFilesRecVOTransform.toVO(dto.getUploadFile()));//文件路径
            vo.setOwnerCdNm(dto.getOwnerCdNm());
            vo.setpNo(dto.getpNo());
            vo.setApplyDt(dto.getApplyDt());
            vo.setRlPsnList(PrjLnkCompRlPsnVOTransform.toVOList(dto.getRlPsnList()));
            vo.setBuOrgCdNms(dto.getBuOrgCdNms());//供应商所属机构
            vo.setBuOrgCds(dto.getBuOrgCds());//所属事业部集合
            vo.setSysFlowSHDTOList(dto.getSysFlowSHDTOList());
            vo.setSuppPrjTypCdList(dto.getSuppPrjTypCdList());//可支持挂靠项目类型
            vo.setSuppPrjTypCd(dto.getSuppPrjTypCd());//可支持挂靠项目类型拼接字符串
        }
        return vo;
    }

    /**
     * VO 转 DTO
     *
     * @param vo PrjLnkCompVO
     * @return PrjLnkCompDTO
     */
    public static PrjLnkCompDTO toDTO(PrjLnkCompVO vo) {
        PrjLnkCompDTO dto = baseToDTO(vo);
        if (vo != null) {
            dto.setAudStsCdNm(vo.getAudStsCdNm());//流程状态名称
            dto.setUploadFile(SysUlFilesRecVOTransform.toDTO(vo.getUploadFile()));//文件路径
            dto.setOwnerCdNm(vo.getOwnerCdNm());
            dto.setpNo(vo.getpNo());
            dto.setApplyDt(vo.getApplyDt());
            dto.setRlPsnList(PrjLnkCompRlPsnVOTransform.toDTOList(vo.getRlPsnList()));

            //TODO ? 是否需要
            dto.setBuOrgCdNms(vo.getBuOrgCdNms());//供应商所属机构
            dto.setBuOrgCds(vo.getBuOrgCds());//所属事业部集合
            dto.setSysFlowSHDTOList(vo.getSysFlowSHDTOList());
            dto.setSuppPrjTypCdList(vo.getSuppPrjTypCdList());//可支持挂靠项目类型
            dto.setSuppPrjTypCd(vo.getSuppPrjTypCd());//可支持挂靠项目类型拼接字符串
        }
        return dto;
    }

    /**
     * DTO集合 转 VO集合
     *
     * @param list List<PrjLnkCompDTO>
     * @return List<PrjLnkCompVO>
     */
    public static List<PrjLnkCompVO> toVOList(List<PrjLnkCompDTO> list) {
        List<PrjLnkCompVO> voList = new ArrayList<PrjLnkCompVO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (PrjLnkCompDTO dto : list) {
                voList.add(toVO(dto));
            }
        }
        return voList;
    }

    /**
     * VO集合 转 DTO集合
     *
     * @param list List<PrjLnkCompVO>
     * @return List<PrjLnkCompDTO>
     */
    public static List<PrjLnkCompDTO> toDTOList(List<PrjLnkCompVO> list) {
        List<PrjLnkCompDTO> dtoList = new ArrayList<PrjLnkCompDTO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (PrjLnkCompVO vo : list) {
                dtoList.add(toDTO(vo));
            }
        }
        return dtoList;
    }
}
